const dictionary = require('./dictionary')

module.exports = appInfo => {
  const config = exports = {}

  // use for cookie sign key, should change to your own and keep security
  config.keys = appInfo.name + '0011 in 2021'

  // 中间件
  config.middleware = ['errorHandler', 'auth']

  config.baseUrl = '/mooc/v1'

  // 加盐
  config.salt = 'mooc'

  // 慕课csrf值和cookie值
  config.moocCookie = {
    NTESSTUDYSI: '73e64ef3abbf4b5e834330bc66943c23'
  }

  // 慕课网域名
  config.moocDomain = 'https://www.icourse163.org'

  // sequelize配置
  config.sequelize = {
    dialect: 'mysql',
    host: 'localhost', // host
    port: '3306', // 端口号
    password: 'Aa9900107903', // 密码
    username: 'root', // 用户名
    database: 'mooc', // 数据库名
    pool: { // 数据库连接池
      max: 10, // 最大连接数
      min: 2, // 最小连接数
      idle: 10000 // 连接释放之前可以空闲的最长时间（以毫秒为单位）。
    },
    define: {
      freezeTableName: true,
      createdAt: 'createTime',
      updatedAt: 'lastTime'
    },
    timezone: '+08:00' // 东八时区
  }
  // swagger
  config.swaggerdoc = {
    dirScanner: './app/controller', // 配置自动扫描的控制器路径。
    basePath: '/recruitment/v1',
    apiInfo: { // 接口文档的标题，描述或其它。
      title: 'Wisefly公众号招聘系统', // 接口文档的标题。
      description: "统一返回报文格式：<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;code:'通讯状态',<br/>&nbsp;&nbsp;&nbsp;&nbsp;msg:'描述信息',<br/>&nbsp;&nbsp;&nbsp;&nbsp;data:{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;busiCode:'业务状态',<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg:'业务描述',<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 其他信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/>", // 接口文档描述。
      version: 'v1' // 接口文档版本。
    },
    schemes: ['http'],
    securityDefinitions: { // 配置接口安全授权方式。
      Authorization: {
        type: 'apiKey',
        description: 'JWT授权(数据将在请求头中进行传输) 直接在下框中输入Bearer {token}（注意两者之间是一个空格）',
        name: 'Authorization',
        in: 'header'
      }
    },
    enableSecurity: true // 是否启用授权，默认 false（不启用）。
  }

  // 跨域cors配置
  config.cors = {
    origin: '*', // 表示允许的源
    allowMethods: 'GET,PUT,POST,DELETE' // 表示允许的http请求方式
  }

  // 关闭csrf攻击防范
  config.security = {
    csrf: {
      enable: false
    }
  }

  // 全局错误校验函数
  config.validatePlus = {
    resolveError(ctx, errors) {
      if (errors.length) {
        const message = '[INVALID REQUEST] ' + errors.map(item => {
          return item.message
        }).join('，')
        ctx.renderBack(null, '0', null, '400', message)
      }
    }
  }

  // 不需要token鉴权的路由
  // 请求方法:地址
  config.whiteList = ['post:/login', 'post:/register', 'post:/refreshToken', 'get:/post', 'put:/post/increase/{id}']

  // egg-jwt配置
  config.jwt = {
    secret: 'mooc_token_key', // 加密密匙
    expiresIn: '2h', // accessToken时长
    refreshExpiresIn: '72h' // refreshToken时长
  }

  // 微信公众号配置
  config.wechat = {
    // 测试appID和appsecret
    appID: 'wxeba8bff4526f2cd4',
    appsecret: '6bffdf313179bbfaa4260cee17352f22'
    // 真实appID和appsecret
    // appID: 'wx3cc7d11f701b962d',
    // appsecret: 'd83792e0515d48b84c9c9bf08d8239ba'
  }

  // 字典
  config.dictionary = dictionary

  // 监听端口号
  exports.cluster = {
    listen: {
      port: 11027
    }
  }

  // 文件上传允许格式白名单
  config.multipart = {
    whitelist: ['.html', '.htm', '.wps', '.jpg', '.jpeg', '.png', '.pdf', '.doc', '.docx', '.txt', '.xlsx', '.zip']
  }

  // 配置redis
  // config.redis = {
  //   client: {
  //     port: 6379,
  //     host: '127.0.0.1',
  //     password: '',
  //     db: 0
  //   }
  // }

  // 权限中心url地址
  config.authUrl = 'http://10.0.1.106:9998'

  // o2oa的url地址
  config.o2oaUrl = 'http://14.23.112.171:20020'
  // config.o2oaUrl = 'http://10.0.1.123:20020'

  // 实习生和校招流程id
  config.studentWorkId = 'cadea050-38b8-4bbf-a96e-5736bedd68db'

  // 正职工流程id
  config.employeeWorkId = '12d26a27-b39b-4ed4-b24e-77ae6aec6e8a'

  // o2oa登录账号和密码
  config.authO2oa = {
    credential: '0283',
    password: 'a123456'
  }

  return config
}
